package com.leishixiong.servlet;
import com.leishixiong.blog.model.User;
import com.leishixiong.blog.service.UserService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/do-login")
public class DoLoginServlet extends HttpServlet {
    private final UserService userService = new UserService();

    // 按需写代码 -> 自顶向下设计
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 完全不用管原来是否有登录过，重新登录即可

        // 1. 读取用户提交的信息
        req.setCharacterEncoding("utf-8");
        String username = req.getParameter("username");
        String password = req.getParameter("password");


        // 3. 至少区分出 3 种情况
        // 1) 注册成功                     user != null
        // 2) 用户名不存在                  user == null
        // 3) 由于系统操作导致的登录失败       以异常方式体现
        User user = userService.login(username, password);

        // 异常直接交给 Tomcat 去处理，Tomcat 自动生成 500 页面【虽然对用户不友好，但实现简单】
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html");
        PrintWriter writer = resp.getWriter();
        if (user != null) {

                // 放置 session，视为用户登录了
                HttpSession session = req.getSession();
                session.setAttribute("currentUser", user);
                // 这里也可以用模板去完成
                writer.printf("<p>登录成功，点击<a href='/'>此处</a>跳转到首页</p>\r\n");
                return;

        }

        // 这里也可以用模板去完成
        writer.printf("<p>登录失败，点击<a href='/login.html'>此处</a>重新登录</p>\r\n");
    }
}
